/** * @(#) project: GK53_branch * @(#) file: TBTablePanel.java * * Copyright 2010 UFGOV, Inc. All rights reserved. * UFGOV PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * */package com.ufgov.zc.client.zc.ztb.table.panel;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.math.BigDecimal;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.swing.AbstractAction;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JToolBar;import javax.swing.SwingUtilities;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;import com.ufgov.smartclient.plaf.BlueLookAndFeel;import com.ufgov.zc.client.zc.ztb.ChangeRMB;import com.ufgov.zc.client.zc.ztb.table.entity.table.XmlTable;import com.ufgov.zc.client.zc.ztb.table.service.TableService;import com.ufgov.zc.client.zc.ztb.table.tablecomponent.JTable;import com.ufgov.zc.client.zc.ztb.table.tablecomponent.JTableModel;import com.ufgov.zc.client.zc.ztb.util.GV;/** * 投标时供应商填写的表格，此表格的样式在定义招标文件时定义，然后随着招标文件一起下发 * * @date: 2010-4-29 上午11:23:50 * @version: V1.0 * @since: 1.0 * @author: Administrator * @modify: */public class TBTablePanel extends JPanel {  private static final long serialVersionUID = -3483607311071873109L;  private String nodeName = GV.NODE_NAME_TBYLB;  private String projectName = "";  private String bagName = "";  private String isShowRMB = "N";  private String supplierName = "";  private String count = "";  //保存按钮  public JButton buttonSave = createButton("上传报价", "fsave", null);  //表格是否是只读，默认是否，在评标时调用传入 是  private boolean tableIsReadOnly;  private com.ufgov.zc.client.zc.ztb.table.tablecomponent.JTable table;  private String remark = "";  private XmlTable xmlTable = null;  private static Map<String, String> moneyMap = new HashMap<String, String>();  public TBTablePanel(List<String> param, String xmlTableString) {    this.xmlTable = new TableService().convertStr2XmlTable(xmlTableString);    initParameter(param);    initComponents();  }  public TBTablePanel(List<String> param, XmlTable xmlTable) {    this.xmlTable = xmlTable;    initParameter(param);    initComponents();  }  public TBTablePanel(List<String> param, String filepath, String file) {    this.xmlTable = new TableService().createXmlTable(filepath);    initParameter(param);    initComponents();  }  public TBTablePanel(List<String> param, String filepath, boolean tableIsReadOnly) {    this.xmlTable = new TableService().createXmlTable(filepath);    this.tableIsReadOnly = tableIsReadOnly;    initParameter(param);    initComponents();  }  //开标大厅，二次报价  public TBTablePanel(List<String> param, String filepath, boolean tableIsReadOnly, int count, String flag) {    this.xmlTable = new TableService().createXmlTable(filepath);    this.tableIsReadOnly = tableIsReadOnly;    initParameterDt(param);    initDtPackEcbjComponents(flag, count);  }  //开标大厅，标段一览  public TBTablePanel(List<String> param, String filepath, boolean tableIsReadOnly, int count) {    this.xmlTable = new TableService().createXmlTable(filepath);    this.tableIsReadOnly = tableIsReadOnly;    initParameterDt(param);    initDtPackComponents(count);  }  private void initParameterDt(List<String> param) {    if (param != null) {      this.projectName = param.get(0);      this.bagName = param.get(1);      this.nodeName = param.get(2);      this.isShowRMB = param.get(3);      this.supplierName = param.get(4);      this.count = param.get(5);    }  }  private void initParameter(List<String> param) {    if (param != null) {      this.projectName = param.get(0);      this.bagName = param.get(1);      this.nodeName = param.get(2);      this.isShowRMB = param.get(3);    }  }  public static void main(String s[]) {    SwingUtilities.invokeLater(new Runnable() {      public void run() {        try {          UIManager.setLookAndFeel(new BlueLookAndFeel());        } catch (UnsupportedLookAndFeelException e1) {          e1.printStackTrace();        }        JFrame frame = new JFrame();        frame.setIconImage(frame.getToolkit().getImage(GV.getImageUrl("windowicon.jpg")));        List<String> param = new ArrayList<String>();        param.add("省市联动公务用车政府采购协议供货");        param.add("分包一：25万以下新能源轿车");        param.add(GV.NODE_NAME_TBYLB);        param.add("Y");        TBTablePanel panel = new TBTablePanel(param, new DemoData().getDemoData());        frame.getContentPane().setLayout(new BorderLayout());        frame.getContentPane().add(new JScrollPane(panel), BorderLayout.CENTER);        frame.addWindowListener(new WindowAdapter() {          public void windowClosing(WindowEvent e) {            System.exit(0);          }        });        frame.setPreferredSize(new Dimension(900, 600));        frame.pack();        frame.setVisible(true);      }    });  }  private void initComponents() {    this.remark = this.xmlTable.getRemark();    setLayout(new BorderLayout());    JPanel panel = new JPanel(new BorderLayout());    panel.add(createTitlePanel(), BorderLayout.NORTH);    panel.add(createBodyPanel(), BorderLayout.CENTER);    panel.add(createBottomPanel(), BorderLayout.SOUTH);    if ("Y".equals(this.isShowRMB)) {      addBiTableLisenter(table);      initCalcSumInfo();    } else {      createTableTitleJLabelWithNoSum();    }    //panel重绘一下    panel.repaint();    add(panel, BorderLayout.CENTER);  }  private JPanel createBottomPanel() {    JPanel panel = new JPanel();    panel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));    if (this.remark == null || "".equals(this.remark)) {      this.remark = "无.";    }    JLabel label = new JLabel(getFormatString(this.remark), JLabel.LEADING);    panel.add(label);    return panel;  }  private String getFormatString(String remark) {    remark = remark.replaceAll("\r\n", "<br>").replaceAll("\n", "<br>");    StringBuffer buff = new StringBuffer();    buff.append("<html><font size='4' color='red'>");    buff.append(remark);    buff.append("<br>.</font></html>");    return buff.toString();  }  /**   * 开标一览，开标大厅用   */  private void initDtPackComponents(int count) {    this.remark = this.xmlTable.getRemark();    setLayout(new BorderLayout());    JPanel panel = new JPanel(new BorderLayout());    panel.add(createTitlePanel(), BorderLayout.NORTH);    panel.add(createBodyDtPanel(), BorderLayout.CENTER);    if ("Y".equals(this.isShowRMB)) {      addBiTableLisenter(table);      initCalcSumDtInfo(count);    }    add(panel, BorderLayout.CENTER);  }  /**   * 二次报价，开标大厅用   */  private void initDtPackEcbjComponents(String flag, int count) {    this.remark = this.xmlTable.getRemark();    setLayout(new BorderLayout());    JPanel panel = new JPanel(new BorderLayout());    panel.add(createTitlePanel(), BorderLayout.NORTH);    if (flag.equals("CURR")) {      panel.add(createBodyNoScrollPanel(), BorderLayout.CENTER);    } else {      panel.add(createBodyPanel(), BorderLayout.CENTER);    }    if ("Y".equals(this.isShowRMB)) {      addBiTableLisenter(table);      initCalcEcbjSumDtInfo(count);    } else {    }    add(panel, BorderLayout.CENTER);  }  /**   * 动态获取总价/折扣率/折扣信息   */  private void getSumInfo() {    String colType = TableService.getColumnType(xmlTable);    String colName = TableService.getColumnIDName(xmlTable);    if ("TOTAL".equals(colType) || "IS_SUM_COL".equals(colType)) {      updateTotalLabel(calcSumInfoByTable());    } else if ("DISCOUNT".equals(colType)) {      infoLabel.setText(getCompoStringDiscount(colName));    } else if ("DISCOUNT_RATE".equals(colType)) {      infoLabel.setText(getCompoStringDiscount(colName));    }    infoLabel.setPreferredSize(new Dimension(200, 100));  }  /**   * 直接用xmltable计算总价信息   */  private void initCalcSumInfo() {    String colType = TableService.getColumnType(xmlTable);    if ("TOTAL".equals(colType) || "IS_SUM_COL".equals(colType)) {      if (this.getTable() == null || this.getTable().getRowCount() == 0) {        updateTotalLabel(new BigDecimal(0));      }      TableService ts = new TableService();      updateTotalLabel(ts.getTotalBagJe(xmlTable));    } else if ("DISCOUNT".equals(colType)) {      this.getSumInfo();    } else if ("DISCOUNT_RATE".equals(colType)) {      this.getSumInfo();    }  }  /**   * 直接用xmltable计算总价信息,开标大厅，标段一览   */  private void initCalcSumDtInfo(int count) {    BigDecimal sum = new BigDecimal(0);    if (this.getTable() == null || this.getTable().getRowCount() == 0) {      updateTotalDtLabel(sum, count);    }    TableService ts = new TableService();    updateTotalDtLabel(ts.getTotalBagJe(xmlTable), count);  }  /**   * 直接用xmltable计算总价信息,开标大厅，二次报价   */  private void initCalcEcbjSumDtInfo(int count) {    BigDecimal sum = new BigDecimal(0);    if (this.getTable() == null || this.getTable().getRowCount() == 0) {      updateTotalDtEcbjLabel(sum, count);    }    TableService ts = new TableService();    updateTotalDtEcbjLabel(ts.getTotalBagJe(xmlTable), count);  }  /**   * 根据JTable来计算列总价   *   * @return   */  private BigDecimal calcSumInfoByTable() {    BigDecimal sum = new BigDecimal(0);    int totalCol = TableService.getTotalColumn(xmlTable);    for (int i = 0; i < table.getRowCount(); i++) {      Object obj = table.getValueAt(i, totalCol);      if (obj != null && !obj.toString().isEmpty()) {        sum = sum.add(new BigDecimal(obj.toString().replaceAll(",", "")));      }    }    return sum;  }  /**   * 根据JTable获得折扣率或者折扣列   *   * @return   */  public BigDecimal getDiscountOrRateByTable() {    BigDecimal sum = new BigDecimal(0);    int totalCol = TableService.getTotalColumn(xmlTable);    for (int i = 0; i < table.getRowCount(); i++) {      Object obj = table.getValueAt(i, totalCol);      if (obj != null && !obj.toString().isEmpty()) {        return new BigDecimal(obj.toString().replaceAll(",", ""));      }    }    return sum;  }  /**   * 给表格添加事件，当表格中总价列发生改变时，能够自动重新计算新的总价   *   * @param table   */  public void addBiTableLisenter(JTable table) {    table.getModel().addTableModelListener(new TableModelListener() {      public void tableChanged(TableModelEvent e) {        getSumInfo();      }    });  }  private JPanel createTitlePanel() {    JLabel label = new JLabel("<html><font size=6 color='blue'>" + nodeName + "</font></html>");    JPanel panel = new JPanel();    panel.add(label);    return panel;  }  //固定Scroll的大小  private JPanel createBodyNoScrollPanel() {    JPanel panel = new JPanel(new BorderLayout());    table = createTable();    JScrollPane scrollPane = new JScrollPane(table);    scrollPane.setPreferredSize(new Dimension(360, 100));    panel.add(scrollPane, BorderLayout.CENTER);    //评标时表格不允许编辑，不需要显示表格操作按钮。    if (!tableIsReadOnly) {      JToolBar toolBar = createToolBar();      panel.add(toolBar, BorderLayout.SOUTH);    }    return panel;  }  //开标大厅用  private JPanel createBodyDtPanel() {    JPanel panel = new JPanel(new BorderLayout());    panel.add(createTableTitleJLabel(), BorderLayout.NORTH);    table = createTable();    JScrollPane scrollPane = new JScrollPane(table);    panel.add(scrollPane, BorderLayout.CENTER);    //评标时表格不允许编辑，不需要显示表格操作按钮。    if (!tableIsReadOnly) {      JToolBar toolBar = createToolBar();      panel.add(toolBar, BorderLayout.SOUTH);    }    return panel;  }  private JPanel createBodyPanel() {    JPanel panel = new JPanel(new BorderLayout());    panel.add(createTableTitleJLabel(), BorderLayout.NORTH);    table = createTable();    JScrollPane scrollPane = new JScrollPane(table);    panel.add(scrollPane, BorderLayout.CENTER);    //评标时表格不允许编辑，不需要显示表格操作按钮。    if (!tableIsReadOnly) {      JToolBar toolBar = createToolBar();      panel.add(toolBar, BorderLayout.SOUTH);    }    return panel;  }  private static JLabel infoLabel = new JLabel();  /**   * 刷新总价panel   *   * @param num   */  public void updateTotalLabel(BigDecimal num) {    if (num == null) {      num = new BigDecimal(0);    }    String numText = num.toPlainString();    String cnText = "0";    try {      cnText = ChangeRMB.doChange(numText);    } catch (Exception e) {    }    infoLabel.setText(getCompoString(numText, cnText));  }  /**   * 刷新总价panel,开标大厅，标段一览用   *   * @param num   */  public void updateTotalDtLabel(BigDecimal num, int count) {    if (num == null) {      num = new BigDecimal(0);    }    String numText = num.toPlainString();    String cnText = "0";    try {      cnText = ChangeRMB.doChange(numText);    } catch (Exception e) {    }    infoLabel.setText(getCompoDtPackString(this.projectName, numText, cnText, count));  }  /**   * 刷新总价panel,开标大厅，二次报价   *   * @param num   */  public void updateTotalDtEcbjLabel(BigDecimal num, int count) {    if (num == null) {      num = new BigDecimal(0);    }    String numText = num.toPlainString();    String cnText = "0";    try {      cnText = ChangeRMB.doChange(numText);    } catch (Exception e) {    }    infoLabel.setText(getCompoDtEcbjString(this.projectName, numText, cnText, count));  }  private JLabel createTableTitleJLabel() {    if ("Y".equals(this.isShowRMB)) {      infoLabel = new JLabel();      infoLabel.setPreferredSize(new Dimension(200, 100));      infoLabel.setText(getCompoString("0", "零圆整"));      return infoLabel;    } else {      return createTableTitleJLabelWithNoSum();    }  }  /**   * 当不需要显示总价信息时，使用下面的返回方法   *   * @return   */  private JLabel createTableTitleJLabelWithNoSum() {    StringBuffer buff = new StringBuffer();    buff.append("<html><b><font size='4' color='blue'>");    buff.append("项目名称: ");    buff.append(this.projectName);    buff.append(";<br/>");    buff.append("分包名称: ");    buff.append(this.bagName);    buff.append(".<br/>");    buff.append("</font></b><br/></html>");    infoLabel = new JLabel(buff.toString());    infoLabel.setPreferredSize(new Dimension(200, 100));    return infoLabel;  }  /**   * 拼接标段总价信息   *   * @param totalNum   * @param totalText   * @return   */  private String getCompoString(String totalNum, String totalText) {    StringBuffer buff = new StringBuffer();    buff.append("<html><b><font size='4' color='blue'>");    buff.append("项目名称: ");    buff.append(this.projectName);    buff.append(";<br/>");    buff.append("分包名称: ");    buff.append(this.bagName);    buff.append(".<br/>");    buff.append("</font><br/><b align='center'><font color='red' size='5'>");    String colType = TableService.getColumnType(xmlTable);    String colName = TableService.getColumnIDName(xmlTable);    if ("TOTAL".equals(colType) || "IS_SUM_COL".equals(colType)) {      buff.append(colName);      buff.append("为：");      buff.append(totalNum);      buff.append("(元)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大写：");      buff.append(totalText);      buff.append(".");    } else if ("DISCOUNT".equals(colType)) {      buff.append(colName);      buff.append("为：0%.");    } else if ("DISCOUNT_RATE".equals(colType)) {      buff.append(colName);      buff.append("为：0%.");    }    buff.append("</font></b></b><br/><br/></html>");    moneyMap.put("money", totalNum);    moneyMap.put("moneyCN", totalText);    return buff.toString();  }  /**   * 拼接标段折扣/或者折扣率信息   *   * @param colType   * @return   */  private String getCompoStringDiscount(String colType) {    StringBuffer buff = new StringBuffer();    buff.append("<html><b><font size='4' color='blue'>");    buff.append("项目名称: ");    buff.append(this.projectName);    buff.append(";<br/>");    buff.append("分包名称: ");    buff.append(this.bagName);    buff.append(".<br/>");    buff.append("</font><br/><b align='center'><font color='red' size='5'>");    BigDecimal dis = getDiscountOrRateByTable();    if (dis.compareTo(new BigDecimal(0.0)) >= 0 && dis.compareTo(new BigDecimal(100)) <= 0) {      buff.append(colType);      buff.append("为：");      buff.append(dis + "%.");    } else {      buff.append("提示：【");      buff.append(colType);      buff.append("】只能是0~100之间的整数或小数值！");    }    buff.append("</font></b></b><br/><br/></html>");    return buff.toString();  }  /**   * 保存前进行校验   *   * @return   */  public boolean checkBeforeSave() {    String colType = TableService.getColumnType(xmlTable);    String colName = TableService.getColumnIDName(xmlTable);    if ("TOTAL".equals(colType) || "IS_SUM_COL".equals(colType)) {      BigDecimal val = this.calcSumInfoByTable();      if (val.compareTo(new BigDecimal(0.0)) < 0) {        JOptionPane.showMessageDialog(null, "【" + colName + "】的值必须是一个大于等于0数值！");        return false;      } else {        return true;      }    } else if ("DISCOUNT".equals(colType)) {      return this.toCheckDiscountOrRate(colName);    } else if ("DISCOUNT_RATE".equals(colType)) {      return this.toCheckDiscountOrRate(colName);    }    return true;  }  private boolean toCheckDiscountOrRate(String colName) {    BigDecimal dis = this.getDiscountOrRateByTable();    if (dis.compareTo(new BigDecimal(0.0)) >= 0 && dis.compareTo(new BigDecimal(100)) <= 0) {      return true;    } else {      JOptionPane.showMessageDialog(null, "【" + colName + "】的值只能在0~100之间的一个数值！");      return false;    }  }  /**   * 拼接标段总价信息，开标大厅，标段一览   *   * @param projName   * @param totalNum   * @param totalText   * @return   */  private String getCompoDtPackString(String projName, String totalNum, String totalText, int count) {    StringBuffer buff = new StringBuffer();    buff.append("<html>");    buff.append("<font color='red' size='4'>");    buff.append("供应商：");    buff.append(this.supplierName);    buff.append("&nbsp;&nbsp;总报价：");    buff.append(totalNum);    buff.append("(元)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大写：");    buff.append(totalText);    buff.append(".</font></html>");    moneyMap.put("money", totalNum);    moneyMap.put("moneyCN", totalText);    return buff.toString();  }  /**   * 拼接标段总价信息，开标大厅，二次报价   *   * @param projName   * @param totalNum   * @param totalText   * @return   */  private String getCompoDtEcbjString(String projName, String totalNum, String totalText, int count) {    StringBuffer buff = new StringBuffer();    buff.append("<html>");    buff.append("<font color='red' size='4'>");    buff.append("供应商：");    buff.append(this.supplierName);    buff.append("&nbsp;&nbsp;总报价：");    buff.append(totalNum);    buff.append("(元)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大写：");    buff.append(totalText);    buff.append("&nbsp;&nbsp;报价次数：");    buff.append("第");    buff.append(this.count);    buff.append("次");    buff.append(".</font></html>");    moneyMap.put("money", totalNum);    moneyMap.put("moneyCN", totalText);    return buff.toString();  }  private com.ufgov.zc.client.zc.ztb.table.tablecomponent.JTable createTable() {    table = new TableService().createTable(this.xmlTable, this.tableIsReadOnly);    table.setAutoCreateRowSorter(false);    table.getTableHeader().setReorderingAllowed(true);    return table;  }  private JToolBar createToolBar() {    JButtonActionListener buttonActionListener = new JButtonActionListener();    JToolBar toolBar = new JToolBar();    JButton button = createButton("增加一行", "faddrow", buttonActionListener);    toolBar.add(button);    toolBar.addSeparator();    button = createButton("插入一行", "finsertrow", buttonActionListener);    toolBar.add(button);    toolBar.addSeparator();    button = createButton("删除行", "fremoverow", buttonActionListener);    toolBar.add(button);    toolBar.addSeparator();    toolBar.add(buttonSave);    toolBar.addSeparator();    return toolBar;  }  private JButton createButton(String caption, String actionCommand, ActionListener buttonActionListener) {    JButton button = new JButton(caption);    button.addActionListener(buttonActionListener);    button.setActionCommand(actionCommand);    return button;  }  protected class JButtonActionListener extends AbstractAction {    private static final long serialVersionUID = -4348066932824192291L;    public void actionPerformed(ActionEvent e) {      String buttonID = null;      Object object = e.getSource();      if (object instanceof JButton) {        buttonID = ((JButton) object).getActionCommand();      } else {        buttonID = e.getActionCommand();      }      doAction(buttonID);    }  }  protected void doAction(String buttonID) {    if ("faddrow".equals(buttonID)) {      faddrow();    } else if ("finsertrow".equals(buttonID)) {      finsertrow();    } else if ("fremoverow".equals(buttonID)) {      fremoverow();    }  }  protected void fsave() {  }  protected void faddrow() {    Map<String, String> row = new HashMap<String, String>();    JTableModel tableModel = (JTableModel) table.getModel();    tableModel.add(row);  }  protected void finsertrow() {    Map<String, String> row = new HashMap<String, String>();    JTableModel tableModel = (JTableModel) table.getModel();    int[] selectRows = table.getSelectedRows();    if (selectRows == null || selectRows.length == 0) {      faddrow();      return;    }    int rowIndex = table.convertRowIndexToModel(selectRows[0]);    tableModel.insertRow(rowIndex, row);  }  protected void fremoverow() {    int[] selectRows = table.getSelectedRows();    if (selectRows == null || selectRows.length == 0) {      JOptionPane.showMessageDialog(null, "请选择要删除的行", "提示", JOptionPane.INFORMATION_MESSAGE);      return;    }    int result = JOptionPane.showConfirmDialog(null, "确定删除吗?");    if (JOptionPane.OK_OPTION != result) {      return;    }    JTableModel tableModel = (JTableModel) table.getModel();    tableModel.removeViewRows(selectRows);  }  public String getXmlTableString() {    if (table.getCellEditor() != null) {      table.getCellEditor().stopCellEditing();    }    XmlTable xmlTable = new TableService().JTableToXmlTable(table);    xmlTable.setRemark(remark);    return new TableService().XmlTableToXmls(xmlTable);  }  public com.ufgov.zc.client.zc.ztb.table.tablecomponent.JTable getTable() {    return table;  }  public static String getMoneyString(String key) {    return moneyMap.get(key);  }}class DemoData {  public String getDemoData() {    StringBuffer sb = new StringBuffer();    sb.append("<XmlTable>                                                  ");    sb.append("<remark>1、投标报价包括车辆交付采购人时的所有费用。2、交货时间是指采购人与投标人推荐的协议供货服务商签订合同后多少日历天内供货。3、本表格式不得自行改动，用于唱标，供应商报多个分包的，行数不够可自行添加。4、该表中内容应与标书中内容完全一致，不一致的以开标一览表为准，并不得填报选择性方案。</remark>");    sb.append("  <columns>                                                 ");    sb.append("    <XmlTableColumn>                                        ");    sb.append("      <pageId></pageId>                                     ");    sb.append("      <gridId></gridId>                                     ");    sb.append("      <columnId>TABLE.ROWNUM</columnId>                     ");    sb.append("      <ordIndex>0</ordIndex>                                ");    sb.append("      <caption>行次</caption>                               ");    sb.append("      <width>50</width>                                     ");    sb.append("      <isVisible>true</isVisible>                           ");    sb.append("      <align>C</align>                                      ");    sb.append("      <dataType>NUM</dataType>                              ");    sb.append("      <valsetId></valsetId>                                 ");    sb.append("      <rowIndex>0</rowIndex>                                ");    sb.append("      <colIndex>0</colIndex>                                ");    sb.append("      <fieldWidth>0</fieldWidth>                            ");    sb.append("      <fieldHeight>0</fieldHeight>                          ");    sb.append("      <isReadOnly>false</isReadOnly>                        ");    sb.append("      <isNull>true</isNull>                                 ");    sb.append("      <isAllowInput>false</isAllowInput>                    ");    sb.append("      <minValue>4.9E-324</minValue>                         ");    sb.append("      <maxValue>1.7976931348623157E308</maxValue>           ");    sb.append("      <minLen>0</minLen>                                    ");    sb.append("      <maxLen>0</maxLen>                                    ");    sb.append("      <decLen>0</decLen>                                    ");    sb.append("      <isInEditor>true</isInEditor>                         ");    sb.append("      <editorType>EDITOR_TYPE_TEXTFIELD</editorType>        ");    sb.append("      <isSave>false</isSave>                                ");    sb.append("      <isPk>false</isPk>                                    ");    sb.append("      <isInTable>true</isInTable>                           ");    sb.append("      <defaultValue></defaultValue>                         ");    sb.append("      <isAutoNum>false</isAutoNum>                          ");    sb.append("      <isForceReadOnly>true</isForceReadOnly>               ");    sb.append("      <remark></remark>                                     ");    sb.append("      <columnPosition></columnPosition>                     ");    sb.append("      <isWatchOnly>false</isWatchOnly>                      ");    sb.append("      <isShowZero>false</isShowZero>                        ");    sb.append("      <isPrint>true</isPrint>                               ");    sb.append("      <isThousandsSeparator>true</isThousandsSeparator>     ");    sb.append("      <groupId></groupId>                                   ");    sb.append("      <dataMap>                                             ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_THOUSANDS_SEPARATOR</string>           ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>VALSET_ID</string>                        ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>GROUP_ID</string>                         ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_FORCE_READONLY</string>                ");    sb.append("          <string>Y</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>CAPTION</string>                          ");    sb.append("          <string>行次</string>                             ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>ALIGN</string>                            ");    sb.append("          <string>C</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DEC_LEN</string>                          ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>COLUMN_ID</string>                        ");    sb.append("          <string>TABLE.ROWNUM</string>                     ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DATA_TYPE</string>                        ");    sb.append("          <string>NUM</string>                              ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>WIDTH</string>                            ");    sb.append("          <string>50</string>                               ");    sb.append("        </entry>                                            ");    sb.append("      </dataMap>                                            ");    sb.append("    </XmlTableColumn>                                       ");    sb.append("    <XmlTableColumn>                                        ");    sb.append("      <pageId></pageId>                                     ");    sb.append("      <gridId></gridId>                                     ");    sb.append("      <columnId>品牌及车型</columnId>                       ");    sb.append("      <ordIndex>0</ordIndex>                                ");    sb.append("      <caption>品牌及车型</caption>                         ");    sb.append("      <width>150</width>                                    ");    sb.append("      <isVisible>true</isVisible>                           ");    sb.append("      <align>L</align>                                      ");    sb.append("      <dataType>TEXT</dataType>                             ");    sb.append("      <valsetId></valsetId>                                 ");    sb.append("      <rowIndex>0</rowIndex>                                ");    sb.append("      <colIndex>0</colIndex>                                ");    sb.append("      <fieldWidth>0</fieldWidth>                            ");    sb.append("      <fieldHeight>0</fieldHeight>                          ");    sb.append("      <isReadOnly>false</isReadOnly>                        ");    sb.append("      <isNull>true</isNull>                                 ");    sb.append("      <isAllowInput>false</isAllowInput>                    ");    sb.append("      <minValue>4.9E-324</minValue>                         ");    sb.append("      <maxValue>1.7976931348623157E308</maxValue>           ");    sb.append("      <minLen>0</minLen>                                    ");    sb.append("      <maxLen>0</maxLen>                                    ");    sb.append("      <decLen>0</decLen>                                    ");    sb.append("      <isInEditor>true</isInEditor>                         ");    sb.append("      <editorType>EDITOR_TYPE_TEXTFIELD</editorType>        ");    sb.append("      <isSave>false</isSave>                                ");    sb.append("      <isPk>false</isPk>                                    ");    sb.append("      <isInTable>true</isInTable>                           ");    sb.append("      <defaultValue></defaultValue>                         ");    sb.append("      <isAutoNum>false</isAutoNum>                          ");    sb.append("      <isForceReadOnly>false</isForceReadOnly>              ");    sb.append("      <remark></remark>                                     ");    sb.append("      <columnPosition></columnPosition>                     ");    sb.append("      <isWatchOnly>false</isWatchOnly>                      ");    sb.append("      <isShowZero>false</isShowZero>                        ");    sb.append("      <isPrint>true</isPrint>                               ");    sb.append("      <isThousandsSeparator>true</isThousandsSeparator>     ");    sb.append("      <groupId></groupId>                                   ");    sb.append("      <dataMap>                                             ");    sb.append("        <entry>                                             ");    sb.append("          <string>VALSET_ID</string>                        ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_THOUSANDS_SEPARATOR</string>           ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>GROUP_ID</string>                         ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_FORCE_READONLY</string>                ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>ALIGN</string>                            ");    sb.append("          <string>L</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>CAPTION</string>                          ");    sb.append("          <string>品牌及车型</string>                       ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DEC_LEN</string>                          ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DATA_TYPE</string>                        ");    sb.append("          <string>TEXT</string>                             ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>COLUMN_ID</string>                        ");    sb.append("          <string>品牌及车型</string>                       ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>WIDTH</string>                            ");    sb.append("          <string>150</string>                              ");    sb.append("        </entry>                                            ");    sb.append("      </dataMap>                                            ");    sb.append("    </XmlTableColumn>                                       ");    sb.append("    <XmlTableColumn>                                        ");    sb.append("      <pageId></pageId>                                     ");    sb.append("      <gridId></gridId>                                     ");    sb.append("      <columnId>最低销售限价(元)</columnId>                 ");    sb.append("      <ordIndex>0</ordIndex>                                ");    sb.append("      <caption>最低销售限价(元)</caption>                   ");    sb.append("      <width>150</width>                                    ");    sb.append("      <isVisible>true</isVisible>                           ");    sb.append("      <align>R</align>                                      ");    sb.append("      <dataType>NUM</dataType>                              ");    sb.append("      <valsetId></valsetId>                                 ");    sb.append("      <rowIndex>0</rowIndex>                                ");    sb.append("      <colIndex>0</colIndex>                                ");    sb.append("      <fieldWidth>0</fieldWidth>                            ");    sb.append("      <fieldHeight>0</fieldHeight>                          ");    sb.append("      <isReadOnly>false</isReadOnly>                        ");    sb.append("      <isNull>true</isNull>                                 ");    sb.append("      <isAllowInput>false</isAllowInput>                    ");    sb.append("      <minValue>4.9E-324</minValue>                         ");    sb.append("      <maxValue>1.7976931348623157E308</maxValue>           ");    sb.append("      <minLen>0</minLen>                                    ");    sb.append("      <maxLen>0</maxLen>                                    ");    sb.append("      <decLen>2</decLen>                                    ");    sb.append("      <isInEditor>true</isInEditor>                         ");    sb.append("      <editorType>EDITOR_TYPE_TEXTFIELD</editorType>        ");    sb.append("      <isSave>false</isSave>                                ");    sb.append("      <isPk>false</isPk>                                    ");    sb.append("      <isInTable>true</isInTable>                           ");    sb.append("      <defaultValue></defaultValue>                         ");    sb.append("      <isAutoNum>false</isAutoNum>                          ");    sb.append("      <isForceReadOnly>false</isForceReadOnly>              ");    sb.append("      <remark></remark>                                     ");    sb.append("      <columnPosition></columnPosition>                     ");    sb.append("      <isWatchOnly>false</isWatchOnly>                      ");    sb.append("      <isShowZero>false</isShowZero>                        ");    sb.append("      <isPrint>true</isPrint>                               ");    sb.append("      <isThousandsSeparator>true</isThousandsSeparator>     ");    sb.append("      <groupId></groupId>                                   ");    sb.append("      <dataMap>                                             ");    sb.append("        <entry>                                             ");    sb.append("          <string>VALSET_ID</string>                        ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_THOUSANDS_SEPARATOR</string>           ");    sb.append("          <string>Y</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>GROUP_ID</string>                         ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_FORCE_READONLY</string>                ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>ALIGN</string>                            ");    sb.append("          <string>R</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>CAPTION</string>                          ");    sb.append("          <string>最低销售限价(元)</string>                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DEC_LEN</string>                          ");    sb.append("          <string>2</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DATA_TYPE</string>                        ");    sb.append("          <string>NUM</string>                              ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>COLUMN_ID</string>                        ");    sb.append("          <string>最低销售限价(元)</string>                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>WIDTH</string>                            ");    sb.append("          <string>150</string>                              ");    sb.append("        </entry>                                            ");    sb.append("      </dataMap>                                            ");    sb.append("    </XmlTableColumn>                                       ");    sb.append("    <XmlTableColumn>                                        ");    sb.append("      <pageId></pageId>                                     ");    sb.append("      <gridId></gridId>                                     ");    sb.append("      <columnId>折扣率(%)</columnId>                        ");    sb.append("      <ordIndex>0</ordIndex>                                ");    sb.append("      <caption>折扣率(%)</caption>                          ");    sb.append("      <width>150</width>                                    ");    sb.append("      <isVisible>true</isVisible>                           ");    sb.append("      <align>R</align>                                      ");    sb.append("      <dataType>NUM</dataType>                              ");    sb.append("      <valsetId></valsetId>                                 ");    sb.append("      <rowIndex>0</rowIndex>                                ");    sb.append("      <colIndex>0</colIndex>                                ");    sb.append("      <fieldWidth>0</fieldWidth>                            ");    sb.append("      <fieldHeight>0</fieldHeight>                          ");    sb.append("      <isReadOnly>false</isReadOnly>                        ");    sb.append("      <isNull>true</isNull>                                 ");    sb.append("      <isAllowInput>false</isAllowInput>                    ");    sb.append("      <minValue>4.9E-324</minValue>                         ");    sb.append("      <maxValue>1.7976931348623157E308</maxValue>           ");    sb.append("      <minLen>0</minLen>                                    ");    sb.append("      <maxLen>0</maxLen>                                    ");    sb.append("      <decLen>2</decLen>                                    ");    sb.append("      <isInEditor>true</isInEditor>                         ");    sb.append("      <editorType>EDITOR_TYPE_TEXTFIELD</editorType>        ");    sb.append("      <isSave>false</isSave>                                ");    sb.append("      <isPk>false</isPk>                                    ");    sb.append("      <isInTable>true</isInTable>                           ");    sb.append("      <defaultValue></defaultValue>                         ");    sb.append("      <isAutoNum>false</isAutoNum>                          ");    sb.append("      <isForceReadOnly>false</isForceReadOnly>              ");    sb.append("      <remark></remark>                                     ");    sb.append("      <columnPosition></columnPosition>                     ");    sb.append("      <isWatchOnly>false</isWatchOnly>                      ");    sb.append("      <isShowZero>false</isShowZero>                        ");    sb.append("      <isPrint>true</isPrint>                               ");    sb.append("      <isThousandsSeparator>true</isThousandsSeparator>     ");    sb.append("      <groupId></groupId>                                   ");    sb.append("      <dataMap>                                             ");    sb.append("        <entry>                                             ");    sb.append("          <string>VALSET_ID</string>                        ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_THOUSANDS_SEPARATOR</string>           ");    sb.append("          <string>Y</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>GROUP_ID</string>                         ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_FORCE_READONLY</string>                ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>ALIGN</string>                            ");    sb.append("          <string>R</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>CAPTION</string>                          ");    sb.append("          <string>折扣率(%)</string>                        ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DEC_LEN</string>                          ");    sb.append("          <string>2</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DATA_TYPE</string>                        ");    sb.append("          <string>NUM</string>                              ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>COLUMN_ID</string>                        ");    sb.append("          <string>折扣率(%)</string>                        ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>WIDTH</string>                            ");    sb.append("          <string>150</string>                              ");    sb.append("        </entry>                                            ");    sb.append("      </dataMap>                                            ");    sb.append("    </XmlTableColumn>                                       ");    sb.append("    <XmlTableColumn>                                        ");    sb.append("      <pageId></pageId>                                     ");    sb.append("      <gridId></gridId>                                     ");    sb.append("      <columnId>投标报价(元)</columnId>                     ");    sb.append("      <ordIndex>0</ordIndex>                                ");    sb.append("      <caption>投标报价(元)</caption>                       ");    sb.append("      <width>150</width>                                    ");    sb.append("      <isVisible>true</isVisible>                           ");    sb.append("      <align>R</align>                                      ");    sb.append("      <dataType>NUM</dataType>                              ");    sb.append("      <valsetId></valsetId>                                 ");    sb.append("      <rowIndex>0</rowIndex>                                ");    sb.append("      <colIndex>0</colIndex>                                ");    sb.append("      <fieldWidth>0</fieldWidth>                            ");    sb.append("      <fieldHeight>0</fieldHeight>                          ");    sb.append("      <isReadOnly>false</isReadOnly>                        ");    sb.append("      <isNull>true</isNull>                                 ");    sb.append("      <isAllowInput>false</isAllowInput>                    ");    sb.append("      <minValue>4.9E-324</minValue>                         ");    sb.append("      <maxValue>1.7976931348623157E308</maxValue>           ");    sb.append("      <minLen>0</minLen>                                    ");    sb.append("      <maxLen>0</maxLen>                                    ");    sb.append("      <decLen>2</decLen>                                    ");    sb.append("      <isInEditor>true</isInEditor>                         ");    sb.append("      <editorType>EDITOR_TYPE_TEXTFIELD</editorType>        ");    sb.append("      <isSave>false</isSave>                                ");    sb.append("      <isPk>false</isPk>                                    ");    sb.append("      <isInTable>true</isInTable>                           ");    sb.append("      <defaultValue></defaultValue>                         ");    sb.append("      <isAutoNum>false</isAutoNum>                          ");    sb.append("      <isForceReadOnly>false</isForceReadOnly>              ");    sb.append("      <remark></remark>                                     ");    sb.append("      <columnPosition></columnPosition>                     ");    sb.append("      <isWatchOnly>false</isWatchOnly>                      ");    sb.append("      <isShowZero>false</isShowZero>                        ");    sb.append("      <isPrint>true</isPrint>                               ");    sb.append("      <isThousandsSeparator>true</isThousandsSeparator>     ");    sb.append("      <groupId></groupId>                                   ");    sb.append("      <dataMap>                                             ");    sb.append("        <entry>                                             ");    sb.append("          <string>VALSET_ID</string>                        ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_THOUSANDS_SEPARATOR</string>           ");    sb.append("          <string>Y</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>GROUP_ID</string>                         ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_FORCE_READONLY</string>                ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>ALIGN</string>                            ");    sb.append("          <string>R</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>CAPTION</string>                          ");    sb.append("          <string>投标报价(元)</string>                     ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DEC_LEN</string>                          ");    sb.append("          <string>2</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DATA_TYPE</string>                        ");    sb.append("          <string>NUM</string>                              ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>COLUMN_ID</string>                        ");    sb.append("          <string>投标报价(元)</string>                     ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>WIDTH</string>                            ");    sb.append("          <string>150</string>                              ");    sb.append("        </entry>                                            ");    sb.append("      </dataMap>                                            ");    sb.append("    </XmlTableColumn>                                       ");    sb.append("    <XmlTableColumn>                                        ");    sb.append("      <pageId></pageId>                                     ");    sb.append("      <gridId></gridId>                                     ");    sb.append("      <columnId>免费质保期</columnId>                       ");    sb.append("      <ordIndex>0</ordIndex>                                ");    sb.append("      <caption>免费质保期</caption>                         ");    sb.append("      <width>150</width>                                    ");    sb.append("      <isVisible>true</isVisible>                           ");    sb.append("      <align>L</align>                                      ");    sb.append("      <dataType>TEXT</dataType>                             ");    sb.append("      <valsetId></valsetId>                                 ");    sb.append("      <rowIndex>0</rowIndex>                                ");    sb.append("      <colIndex>0</colIndex>                                ");    sb.append("      <fieldWidth>0</fieldWidth>                            ");    sb.append("      <fieldHeight>0</fieldHeight>                          ");    sb.append("      <isReadOnly>false</isReadOnly>                        ");    sb.append("      <isNull>true</isNull>                                 ");    sb.append("      <isAllowInput>false</isAllowInput>                    ");    sb.append("      <minValue>4.9E-324</minValue>                         ");    sb.append("      <maxValue>1.7976931348623157E308</maxValue>           ");    sb.append("      <minLen>0</minLen>                                    ");    sb.append("      <maxLen>0</maxLen>                                    ");    sb.append("      <decLen>0</decLen>                                    ");    sb.append("      <isInEditor>true</isInEditor>                         ");    sb.append("      <editorType>EDITOR_TYPE_TEXTFIELD</editorType>        ");    sb.append("      <isSave>false</isSave>                                ");    sb.append("      <isPk>false</isPk>                                    ");    sb.append("      <isInTable>true</isInTable>                           ");    sb.append("      <defaultValue></defaultValue>                         ");    sb.append("      <isAutoNum>false</isAutoNum>                          ");    sb.append("      <isForceReadOnly>false</isForceReadOnly>              ");    sb.append("      <remark></remark>                                     ");    sb.append("      <columnPosition></columnPosition>                     ");    sb.append("      <isWatchOnly>false</isWatchOnly>                      ");    sb.append("      <isShowZero>false</isShowZero>                        ");    sb.append("      <isPrint>true</isPrint>                               ");    sb.append("      <isThousandsSeparator>true</isThousandsSeparator>     ");    sb.append("      <groupId></groupId>                                   ");    sb.append("      <dataMap>                                             ");    sb.append("        <entry>                                             ");    sb.append("          <string>VALSET_ID</string>                        ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_THOUSANDS_SEPARATOR</string>           ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>GROUP_ID</string>                         ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_FORCE_READONLY</string>                ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>ALIGN</string>                            ");    sb.append("          <string>L</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>CAPTION</string>                          ");    sb.append("          <string>免费质保期</string>                       ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DEC_LEN</string>                          ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DATA_TYPE</string>                        ");    sb.append("          <string>TEXT</string>                             ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>COLUMN_ID</string>                        ");    sb.append("          <string>免费质保期</string>                       ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>WIDTH</string>                            ");    sb.append("          <string>150</string>                              ");    sb.append("        </entry>                                            ");    sb.append("      </dataMap>                                            ");    sb.append("    </XmlTableColumn>                                       ");    sb.append("    <XmlTableColumn>                                        ");    sb.append("      <pageId></pageId>                                     ");    sb.append("      <gridId></gridId>                                     ");    sb.append("      <columnId>交货时间(天)</columnId>                     ");    sb.append("      <ordIndex>0</ordIndex>                                ");    sb.append("      <caption>交货时间(天)</caption>                       ");    sb.append("      <width>150</width>                                    ");    sb.append("      <isVisible>true</isVisible>                           ");    sb.append("      <align>L</align>                                      ");    sb.append("      <dataType>TEXT</dataType>                             ");    sb.append("      <valsetId></valsetId>                                 ");    sb.append("      <rowIndex>0</rowIndex>                                ");    sb.append("      <colIndex>0</colIndex>                                ");    sb.append("      <fieldWidth>0</fieldWidth>                            ");    sb.append("      <fieldHeight>0</fieldHeight>                          ");    sb.append("      <isReadOnly>false</isReadOnly>                        ");    sb.append("      <isNull>true</isNull>                                 ");    sb.append("      <isAllowInput>false</isAllowInput>                    ");    sb.append("      <minValue>4.9E-324</minValue>                         ");    sb.append("      <maxValue>1.7976931348623157E308</maxValue>           ");    sb.append("      <minLen>0</minLen>                                    ");    sb.append("      <maxLen>0</maxLen>                                    ");    sb.append("      <decLen>0</decLen>                                    ");    sb.append("      <isInEditor>true</isInEditor>                         ");    sb.append("      <editorType>EDITOR_TYPE_TEXTFIELD</editorType>        ");    sb.append("      <isSave>false</isSave>                                ");    sb.append("      <isPk>false</isPk>                                    ");    sb.append("      <isInTable>true</isInTable>                           ");    sb.append("      <defaultValue></defaultValue>                         ");    sb.append("      <isAutoNum>false</isAutoNum>                          ");    sb.append("      <isForceReadOnly>false</isForceReadOnly>              ");    sb.append("      <remark></remark>                                     ");    sb.append("      <columnPosition></columnPosition>                     ");    sb.append("      <isWatchOnly>false</isWatchOnly>                      ");    sb.append("      <isShowZero>false</isShowZero>                        ");    sb.append("      <isPrint>true</isPrint>                               ");    sb.append("      <isThousandsSeparator>true</isThousandsSeparator>     ");    sb.append("      <groupId></groupId>                                   ");    sb.append("      <dataMap>                                             ");    sb.append("        <entry>                                             ");    sb.append("          <string>VALSET_ID</string>                        ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_THOUSANDS_SEPARATOR</string>           ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>GROUP_ID</string>                         ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>IS_FORCE_READONLY</string>                ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>ALIGN</string>                            ");    sb.append("          <string>L</string>                                ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>CAPTION</string>                          ");    sb.append("          <string>交货时间(天)</string>                     ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DEC_LEN</string>                          ");    sb.append("          <string></string>                                 ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>DATA_TYPE</string>                        ");    sb.append("          <string>TEXT</string>                             ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>COLUMN_ID</string>                        ");    sb.append("          <string>交货时间(天)</string>                     ");    sb.append("        </entry>                                            ");    sb.append("        <entry>                                             ");    sb.append("          <string>WIDTH</string>                            ");    sb.append("          <string>150</string>                              ");    sb.append("        </entry>                                            ");    sb.append("      </dataMap>                                            ");    sb.append("    </XmlTableColumn>                                       ");    sb.append("  </columns>                                                ");    sb.append("  <rows>                                                    ");    sb.append("    <XmlTableRow>                                           ");    sb.append("      <cells>                                               ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("      </cells>                                              ");    sb.append("    </XmlTableRow>                                          ");    sb.append("    <XmlTableRow>                                           ");    sb.append("      <cells>                                               ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("      </cells>                                              ");    sb.append("    </XmlTableRow>                                          ");    sb.append("    <XmlTableRow>                                           ");    sb.append("      <cells>                                               ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("      </cells>                                              ");    sb.append("    </XmlTableRow>                                          ");    sb.append("    <XmlTableRow>                                           ");    sb.append("      <cells>                                               ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("      </cells>                                              ");    sb.append("    </XmlTableRow>                                          ");    sb.append("    <XmlTableRow>                                           ");    sb.append("      <cells>                                               ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("        <XmlTableCell>                                      ");    sb.append("          <value></value>                                   ");    sb.append("        </XmlTableCell>                                     ");    sb.append("      </cells>                                              ");    sb.append("    </XmlTableRow>                                          ");    sb.append("  </rows>                                                   ");    sb.append("</XmlTable>                                                 ");    return sb.toString();  }}